package com.rw.tool.util.escape;

/**
 * 转义链的元素
 */
public class EscapeElement {
    private final ElementType type;

    private final Character escapeChar;

    private final String content;

    private EscapeElement(ElementType type, Character escapeChar, String content) {
        this.type = type;
        this.escapeChar = escapeChar;
        this.content = content;
    }

    /**
     * 创建一个普通内容元素
     */
    public static EscapeElement newContent(String content) {
        return new EscapeElement(ElementType.CONTENT, null, content);
    }

    /**
     * 创建一个转义内容元素
     */
    public static EscapeElement newEscape(char escapeChar, String content) {
        return new EscapeElement(ElementType.ESCAPE, escapeChar, content);
    }

    /**
     * 该元素是否为普通内容
     */
    public boolean isContent() {
        return type == ElementType.CONTENT;
    }

    /**
     * 该元素是否为转义内容
     */
    public boolean isEscape() {
        return type == ElementType.ESCAPE;
    }

    /**
     * 获得内容
     */
    public String getContent() {
        return content;
    }

    /**
     * 获得转义符
     */
    public Character getEscapeChar() {
        return escapeChar;
    }

    /**
     * 元素的类型
     * content表示普通内容
     * escape表示转义内容
     */
    private enum ElementType {
        CONTENT,
        ESCAPE
    }
}
